//////////////////////////////////////////////////////////////////
//
//  Copyright(C), 2013-2017
//
//  File name: common.c
//
//  Author: 卢孙远
//
//  Date: 2017-03
//  
//  Description: 通用函数汇总
//
//  Bug Report: 476941913@qq.com
//
//////////////////////////////////////////////////////////////////

#include "com_file_opt.h"

/********************* 通用函数列表 *******************/

int Open(const char *pathname, int flag)
{
	int fd;
	while((fd=open(pathname, flag)) == -1 && errno == EINTR);

	if(fd == -1)
	{
		perror("open() failed");
		exit(0);
	}

	return fd;
}

ssize_t Write(int fildes, const void *buf, size_t nbyte)
{
	ssize_t n;
	size_t total = 0;

	char *tmp = (char *)buf;
	while(nbyte > 0)
	{
		while((n=write(fildes, tmp, nbyte)) == -1 &&
				errno == EINTR);

		if(n == -1)
		{
			perror("write() error");
			exit(0);
		}

		nbyte -= n;
		tmp += n;
		total += n;
	}

	return total;
}

ssize_t Read(int fildes, void *buf, size_t nbyte)
{
	ssize_t n;
	while((n=read(fildes, buf, nbyte)) == -1
			&& errno == EINTR);

	if(n == -1)
	{
		perror("read() failed");
		exit(0);
	}

	return n;
}







